home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6-1 / Night Owl's Shareware - PDSI-006-1 - Night Owl Corp (1992).iso / 033a / mfm_109b.arj / SORT.PAS < prev    next >
Pascal/Delphi Source File  |  1991-06-20  |  8KB  |  178 lines

  1. {========================================================================}
  2. Procedure SortList;
  3.   Var
  4.     TempSort : ListPtr;
  5.     SortNext, SortPrev, Exchange : Boolean;
  6.   Begin
  7.     If (BeginSort <> NIL) And (EndSort <> NIL) And (BeginSort <> EndSort) Then
  8.     Begin
  9.       SortNext := False; SortPrev := False; Altered := True;
  10.       AddToListOk;
  11.       New(TempSort);
  12.       NextPrintEntry := BeginSort;
  13.       While (NextPrintEntry <> EndSort) And (NextPrintEntry <> NIL) Do
  14.       Begin
  15.         NextPrintEntry := NextPrintEntry^.NextEntry;
  16.         If NextPrintEntry = EndSort Then SortNext := True;
  17.       End;
  18.       NextPrintEntry := BeginSort;
  19.       While (NextPrintEntry <> EndSort) And (NextPrintEntry <> NIL) Do
  20.       Begin
  21.         NextPrintEntry := NextPrintEntry^.PrevEntry;
  22.         If NextPrintEntry = EndSort Then SortPrev := True;
  23.       End;
  24.       If SortNext Then
  25.       Begin
  26.         Repeat
  27.           Exchange := False;
  28.           NextPrintEntry := BeginSort;
  29.           While NextPrintEntry <> EndSort Do
  30.           Begin
  31.             If NextPrintEntry^.FileName > NextPrintEntry^.NextEntry^.FileName Then
  32.             Begin
  33.               TempSort^.TypeOfRecord := NextPrintEntry^.TypeOfRecord;
  34.               TempSort^.FileName := NextPrintEntry^.FileName;
  35.               TempSort^.FileSize := NextPrintEntry^.FileSize;
  36.               TempSort^.FileDate := NextPrintEntry^.FileDate;
  37.               TempSort^.Description := NextPrintEntry^.Description;
  38.               NextPrintEntry^.TypeOfRecord := NextPrintEntry^.NextEntry^.TypeOfRecord;
  39.               NextPrintEntry^.FileName := NextPrintEntry^.NextEntry^.FileName;
  40.               NextPrintEntry^.FileSize := NextPrintEntry^.NextEntry^.FileSize;
  41.               NextPrintEntry^.FileDate := NextPrintEntry^.NextEntry^.FileDate;
  42.               NextPrintEntry^.Description := NextPrintEntry^.NextEntry^.Description;
  43.               NextPrintEntry^.NextEntry^.TypeOfRecord := TempSort^.TypeOfRecord;
  44.               NextPrintEntry^.NextEntry^.FileName := TempSort^.FileName;
  45.               NextPrintEntry^.NextEntry^.FileSize := TempSort^.FileSize;
  46.               NextPrintEntry^.NextEntry^.FileDate := TempSort^.FileDate;
  47.               NextPrintEntry^.NextEntry^.Description := TempSort^.Description;
  48.               Exchange := True;
  49.             End;
  50.             NextPrintEntry := NextPrintEntry^.NextEntry;
  51.           End;
  52.         Until (Not Exchange);
  53.         DisplayScreen;
  54.       End;
  55.       If SortPrev Then
  56.       Begin
  57.         Repeat
  58.           Exchange := False;
  59.           NextPrintEntry := BeginSort;
  60.           While NextPrintEntry <> EndSort Do
  61.           Begin
  62.             If NextPrintEntry^.FileName > NextPrintEntry^.PrevEntry^.FileName Then
  63.             Begin
  64.               TempSort^.TypeOfRecord := NextPrintEntry^.TypeOfRecord;
  65.               TempSort^.FileName := NextPrintEntry^.FileName;
  66.               TempSort^.FileSize := NextPrintEntry^.FileSize;
  67.               TempSort^.FileDate := NextPrintEntry^.FileDate;
  68.               TempSort^.Description := NextPrintEntry^.Description;
  69.               NextPrintEntry^.TypeOfRecord := NextPrintEntry^.PrevEntry^.TypeOfRecord;
  70.               NextPrintEntry^.FileName := NextPrintEntry^.PrevEntry^.FileName;
  71.               NextPrintEntry^.FileSize := NextPrintEntry^.PrevEntry^.FileSize;
  72.               NextPrintEntry^.FileDate := NextPrintEntry^.PrevEntry^.FileDate;
  73.               NextPrintEntry^.Description := NextPrintEntry^.PrevEntry^.Description;
  74.               NextPrintEntry^.PrevEntry^.TypeOfRecord := TempSort^.TypeOfRecord;
  75.               NextPrintEntry^.PrevEntry^.FileName := TempSort^.FileName;
  76.               NextPrintEntry^.PrevEntry^.FileSize := TempSort^.FileSize;
  77.               NextPrintEntry^.PrevEntry^.FileDate := TempSort^.FileDate;
  78.               NextPrintEntry^.PrevEntry^.Description := TempSort^.Description;
  79.               Exchange := True;
  80.             End;
  81.             NextPrintEntry := NextPrintEntry^.PrevEntry;
  82.           End;
  83.         Until (Not Exchange);
  84.         DisplayScreen;
  85.       End;
  86.       Dispose(TempSort);
  87.     End;
  88.   End;
  89. {========================================================================}
  90. Procedure SortListTime;
  91.   Var
  92.     TempSort : ListPtr;
  93.     SortNext, SortPrev, Exchange : Boolean;
  94.   Begin
  95.     If (BeginSort <> NIL) And (EndSort <> NIL) And (BeginSort <> EndSort) Then
  96.     Begin
  97.       SortNext := False; SortPrev := False; Altered := True;
  98.       AddToListOk;
  99.       New(TempSort);
  100.       NextPrintEntry := BeginSort;
  101.       While (NextPrintEntry <> EndSort) And (NextPrintEntry <> NIL) Do
  102.       Begin
  103.         NextPrintEntry := NextPrintEntry^.NextEntry;
  104.         If NextPrintEntry = EndSort Then SortNext := True;
  105.       End;
  106.       NextPrintEntry := BeginSort;
  107.       While (NextPrintEntry <> EndSort) And (NextPrintEntry <> NIL) Do
  108.       Begin
  109.         NextPrintEntry := NextPrintEntry^.PrevEntry;
  110.         If NextPrintEntry = EndSort Then SortPrev := True;
  111.       End;
  112.       If SortNext Then
  113.       Begin
  114.         Repeat
  115.           Exchange := False;
  116.           NextPrintEntry := BeginSort;
  117.           While NextPrintEntry <> EndSort Do
  118.           Begin
  119.             If NextPrintEntry^.FileDate > NextPrintEntry^.NextEntry^.FileDate Then
  120.             Begin
  121.               TempSort^.TypeOfRecord := NextPrintEntry^.TypeOfRecord;
  122.               TempSort^.FileName := NextPrintEntry^.FileName;
  123.               TempSort^.FileSize := NextPrintEntry^.FileSize;
  124.               TempSort^.FileDate := NextPrintEntry^.FileDate;
  125.               TempSort^.Description := NextPrintEntry^.Description;
  126.               NextPrintEntry^.TypeOfRecord := NextPrintEntry^.NextEntry^.TypeOfRecord;
  127.               NextPrintEntry^.FileName := NextPrintEntry^.NextEntry^.FileName;
  128.               NextPrintEntry^.FileSize := NextPrintEntry^.NextEntry^.FileSize;
  129.               NextPrintEntry^.FileDate := NextPrintEntry^.NextEntry^.FileDate;
  130.               NextPrintEntry^.Description := NextPrintEntry^.NextEntry^.Description;
  131.               NextPrintEntry^.NextEntry^.TypeOfRecord := TempSort^.TypeOfRecord;
  132.               NextPrintEntry^.NextEntry^.FileName := TempSort^.FileName;
  133.               NextPrintEntry^.NextEntry^.FileSize := TempSort^.FileSize;
  134.               NextPrintEntry^.NextEntry^.FileDate := TempSort^.FileDate;
  135.               NextPrintEntry^.NextEntry^.Description := TempSort^.Description;
  136.               Exchange := True;
  137.             End;
  138.             NextPrintEntry := NextPrintEntry^.NextEntry;
  139.           End;
  140.         Until (Not Exchange);
  141.         DisplayScreen;
  142.       End;
  143.       If SortPrev Then
  144.       Begin
  145.         Repeat
  146.           Exchange := False;
  147.           NextPrintEntry := BeginSort;
  148.           While NextPrintEntry <> EndSort Do
  149.           Begin
  150.             If NextPrintEntry^.FileDate > NextPrintEntry^.PrevEntry^.FileDate Then
  151.             Begin
  152.               TempSort^.TypeOfRecord := NextPrintEntry^.TypeOfRecord;
  153.               TempSort^.FileName := NextPrintEntry^.FileName;
  154.               TempSort^.FileSize := NextPrintEntry^.FileSize;
  155.               TempSort^.FileDate := NextPrintEntry^.FileDate;
  156.               TempSort^.Description := NextPrintEntry^.Description;
  157.               NextPrintEntry^.TypeOfRecord := NextPrintEntry^.PrevEntry^.TypeOfRecord;
  158.               NextPrintEntry^.FileName := NextPrintEntry^.PrevEntry^.FileName;
  159.               NextPrintEntry^.FileSize := NextPrintEntry^.PrevEntry^.FileSize;
  160.               NextPrintEntry^.FileDate := NextPrintEntry^.PrevEntry^.FileDate;
  161.               NextPrintEntry^.Description := NextPrintEntry^.PrevEntry^.Description;
  162.               NextPrintEntry^.PrevEntry^.TypeOfRecord := TempSort^.TypeOfRecord;
  163.               NextPrintEntry^.PrevEntry^.FileName := TempSort^.FileName;
  164.               NextPrintEntry^.PrevEntry^.FileSize := TempSort^.FileSize;
  165.               NextPrintEntry^.PrevEntry^.FileDate := TempSort^.FileDate;
  166.               NextPrintEntry^.PrevEntry^.Description := TempSort^.Description;
  167.               Exchange := True;
  168.             End;
  169.             NextPrintEntry := NextPrintEntry^.PrevEntry;
  170.           End;
  171.         Until (Not Exchange);
  172.         DisplayScreen;
  173.       End;
  174.       Dispose(TempSort);
  175.     End;
  176.   End;
  177. {========================================================================}
  178.